﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//struct S
//{
//	char name[20];
//	int age;
//	float score;
//};
//int main()
//{
//	struct S s = { "zhangsan",32,69.9f };
//	FILE* pf = fopen("test.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	fprintf(pf, "%s %d %f", s.name, s.age, s.score);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//int main()
//{
//	struct S s = { 0 };
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	
//	fscanf(pf ,"%s %d %f", s.name, &(s.age), &(s.score));
//	printf("%s %d %f", s.name, s.age, s.score);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	struct S s = { "zhangsan",32,69.9f };
//	FILE* pf = fopen("test.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//写文件
//	fprintf(stdout, "%s %d %f", s.name, s.age, s.score);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	struct S s = { "zhangsan",32,69.9f };
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	char arr[30] = { 0 };
//	//写文件
//	//sprintf(arr, "%s %d %f", s.name, s.age, s.score);
//	struct S t = { 0 };
//	printf("%s ", arr);
//	//sscanf(arr, "%s %d %f", t.name, &(t.age), &(t.score));
//	printf("%s %d %f", t.name, t.age, t.score);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	char arr[30] = { 0 };
//	struct S s = { "zhangsan",32,69.9f };
//	sprintf(arr, "%s %d %f", s.name, s.age, s.score);
//	struct S t = { 0 };
//	sscanf(arr, "%s %d %f", t.name, &(t.age), &(t.score));
//	printf("%s %d %f", t.name, t.age, t.score);
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	FILE* pf = fopen("test.txt", "wb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//1.写数据
//	fwrite(arr, sizeof(int), sz, pf);
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//int main()
//{
//	int arr[5] = { 0 };
//	//int sz = sizeof(arr) / sizeof(arr[0]);
//	FILE* pf = fopen("test.txt", "rb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//1.写数据
//	int i = 0;
//	while (fread(arr + i, sizeof(int), 1, pf))
//	{
//		printf("%d ", arr[i]);
//		i++;
//	}
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int ch = 0;
//	ch = getc(pf);
//	printf("%c\n", ch); ///a
//	fseek(pf, 5, SEEK_CUR);
//	ch = getc(pf);
//	printf("%c\n", ch);
//	fseek(pf, -5, SEEK_END);
//	ch = getc(pf);
//	printf("%c\n", ch);
//	ch = getc(pf);
//	printf("%c\n", ch);
//	rewind(pf);
//	int a = ftell(pf);
//	printf("%d", a);
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	int ch = 0;
//	while ((ch = fgetc(pf)) != EOF)
//	{
//		printf("%c ", ch);
//	}
//	//判断是什么原因导致文件结束
//	if (feof(pf))
//	{
//		printf("文件正常结束\n");
//	}
//	else if (ferror(pf))
//	{
//		perror("fgetc");
//	}
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//拷贝文件

//int main()
//{
//	FILE* pfin = fopen("test1.txt", "r");
//	if (pfin == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	FILE* pfout = fopen("test2.txt", "w");
//	if (pfout == NULL)
//	{
//		fclose(pfin);
//		pfin = NULL;
//		perror("fopen");
//		return 1;
//	}
//	int ch = 0;
//	while ((ch = fgetc(pfin)) != EOF)
//	{
//		fputc(ch, pfout);
//	}
//	if (feof(pfin))
//	{
//		printf("文件正常读取结束\n");
//	}
//	else if (ferror(pfin))
//	{
//		perror("fgetc");
//		return 1;
//	}
//	fclose(pfin);
//	pfin = NULL;
//	fclose(pfout);
//	pfout = NULL;
//
//}


//#include <stdio.h>
//#include <windows.h>
////VS2019 WIN11环境测试
//int main()
//{
//	FILE* pf = fopen("test.txt", "w");
//	fputs("abcdef", pf);//先将代码放在输出缓冲区
//	printf("睡眠10秒-已经写数据了，打开test.txt⽂件，发现⽂件没有内容\n");
//	Sleep(10000);
//	printf("刷新缓冲区\n");
//	fflush(pf);//刷新缓冲区时，才将输出缓冲区的数据写到⽂件（磁盘）
//	//注：fflush 在⾼版本的VS上不能使⽤了
//	printf("再睡眠10秒-此时，再次打开test.txt⽂件，⽂件有内容了\n");
//	Sleep(10000);
//	fclose(pf);
//	//注：fclose在关闭⽂件的时候，也会刷新缓冲区
//	pf = NULL;
//	return 0;
//}